#include <bits/stdc++.h>

using namespace std;

struct Hay{
    int s,p;
    const bool operator < (const Hay &h) const {return s>h.s;}
};
const int maxn=100005;
Hay hay[maxn];
int nums[maxn];
bool cov[maxn];

set<int> pos;

int main(){
    int n;
    scanf("%d",&n);
    for(int i=1;i<=n;i++) scanf("%d%d",&hay[i].s,&hay[i].p),nums[i]=hay[i].p;
    sort(hay+1,hay+1+n);
    sort(nums+1,nums+1+n);
    pos.insert(hay[1].p);
    set<int>::iterator it;
    for(int i=2;i<=n;i++){
        it=pos.begin();
        if(*it<hay[i].p){
            it=pos.lower_bound(hay[i].p);
            it--;
            if(hay[i].p-*it<=hay[i].s){
                int x,y;
                x=lower_bound(nums+1,nums+1+n,*it)-nums;
                y=lower_bound(nums+1,nums+1+n,hay[i].p)-nums;
                for(int j=x;j<y;j++) cov[j]=1;
            }
        }
        it=pos.end();
        it--;
        if(*it>hay[i].p){
            it=pos.lower_bound(hay[i].p);
            if(*it-hay[i].p<=hay[i].s){
                int x,y;
                x=lower_bound(nums+1,nums+1+n,hay[i].p)-nums;
                y=lower_bound(nums+1,nums+1+n,*it)-nums;
                for(int j=x;j<y;j++) cov[j]=1;
            }
        }
        pos.insert(hay[i].p);
    }
    int ans=0;
    for(int i=1;i<n;i++) if(cov[i]) ans+=nums[i+1]-nums[i];
    printf("%d\n",ans);
    return 0;
}
